home *** CD-ROM | disk | FTP | other *** search
- RCS_ID_C "$Id: beep.c,v 1.5 1993/07/12 22:50:24 ppessi Exp $";
- /* Most of this was stolen from the "beep" program from the Manx 3.6a
- * distribution.
- *
- * $Author: ppessi $ $Revision: 1.5 $ $Date: 1993/07/12 22:50:24 $
- */
-
- #include "amiga.h"
- #include "display.h"
-
- #include <devices/audio.h>
-
- UBYTE allocmap[] = { 1, 8, 2, 4 };
- UBYTE bwave[] = { 69, 116, 126, 96, 36, 220, 160, 130, 140, 0 };
-
- void
- audiobell()
- {
- struct MsgPort *mp = NULL;
- struct IOAudio *ar = NULL;
- UBYTE *wave = NULL;
-
- if(!(mp = CreateMsgPort()) ||
- !(wave = (UBYTE *)AllocMem(10, MEMF_CHIP)) ||
- !(ar = (struct IOAudio *)CreateIORequest(mp, sizeof(*ar)))) {
- dsinvert(VISUAL_BELL);
- goto CleanReturn;
- }
- strcpy(wave, bwave);
- ar->ioa_Request.io_Message.mn_Node.ln_Pri = 20;
- ar->ioa_Data = allocmap;
- ar->ioa_Length = sizeof(allocmap);
- if(OpenDevice(AUDIONAME, 0, (struct IORequest *)ar, 0) == 0) {
- ar->ioa_Request.io_Command = CMD_WRITE;
- ar->ioa_Request.io_Flags = ADIOF_PERVOL;
- ar->ioa_Data = wave;
- ar->ioa_Length = 10;
- ar->ioa_Period = 421;
- ar->ioa_Volume = 64;
- ar->ioa_Cycles = 100;
-
- BeginIO((struct IORequest *)ar);
- WaitIO((struct IORequest *)ar);
- CloseDevice((struct IORequest *)ar);
- } else dsinvert(VISUAL_BELL);
-
- CleanReturn:
- if (wave) FreeMem(wave, 10);
- if (ar) DeleteIORequest((struct IORequest *)ar);
- if (mp) DeleteMsgPort(mp);
- }
-
-
-